﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using FirebirdSql.Data.FirebirdClient;
using Estrutura;


namespace Banco
{

    public class BD_Aeronaves
    {
        #region variaveis_globais

        acessaDB.conectaDBFireBird fireBird = new conectaDBFireBird();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Aeronaves()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
        }
        public BD_Aeronaves(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public DataSet _retorna_Aeronaves(
                                                string EQUIPAMENTO_ID,
                                                string ACF_ANO_FABRICACAO,
                                                string ACF_PAX,
                                                string ACF_PMD,
                                                string ACF_PMP,
                                                string ACF_FOTO,
                                                string ACF_DESCRICAO_LONGA,
                                                string USU_INSERT,
                                                string DATA_INSERT,
                                                string USU_UPDATE,
                                                string DATA_UPDATE,
                                                string ACF_TRIPULANTES,
                                                string ACFT_CATEGORIA_ID
                                                )
        {

            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "'0'";
            if (string.IsNullOrEmpty(ACF_ANO_FABRICACAO)) ACF_ANO_FABRICACAO = "'0'";
            if (string.IsNullOrEmpty(ACF_PAX)) ACF_PAX = "'0'";
            if (string.IsNullOrEmpty(ACF_PMD)) ACF_PMD = "''";
            if (string.IsNullOrEmpty(ACF_PMP)) ACF_PMP = "''";
            if (string.IsNullOrEmpty(ACF_FOTO)) ACF_FOTO = "''";
            if (string.IsNullOrEmpty(ACF_DESCRICAO_LONGA)) ACF_DESCRICAO_LONGA = "''";
            if (string.IsNullOrEmpty(USU_INSERT)) USU_INSERT = "'0'";
            if (string.IsNullOrEmpty(DATA_INSERT)) DATA_INSERT = "''";
            if (string.IsNullOrEmpty(USU_UPDATE)) USU_UPDATE = "'0'";
            if (string.IsNullOrEmpty(DATA_UPDATE)) DATA_UPDATE = "''";
            if (string.IsNullOrEmpty(ACF_TRIPULANTES)) ACF_TRIPULANTES = "'0'";
            if (string.IsNullOrEmpty(ACFT_CATEGORIA_ID)) ACFT_CATEGORIA_ID = "''";

            string sql = "SELECT " +
                                  "CTM_AERONAVE.EQUIPAMENTO_ID, " +
                                  "CTM_AERONAVE.ACF_ANO_FABRICACAO, " +
                                  "CTM_AERONAVE.ACF_PAX, " +
                                  "CTM_AERONAVE.ACF_PMD, " +
                                  "CTM_AERONAVE.ACF_PMP, " +
                                  "CTM_AERONAVE.ACF_FOTO, " +
                                  "CTM_AERONAVE.ACF_DESCRICAO_LONGA, " +
                                  "CTM_AERONAVE.USU_INSERT, " +
                                  "CTM_AERONAVE.DATA_INSERT, " +
                                  "CTM_AERONAVE.USU_UPDATE, " +
                                  "CTM_AERONAVE.DATA_UPDATE, " +
                                  "CTM_AERONAVE.ACF_TRIPULANTES, " +
                                  "CTM_AERONAVE.ACFT_CATEGORIA_ID " +
                            "FROM CTM_AERONAVE " +
                            "LEFT JOIN EQUIPAMENTO ON EQUIPAMENTO.EQUIPAMENTO_ID = CTM_AERONAVE.EQUIPAMENTO_ID " +
                            //"LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = CTM_AERONAVE.USUARIO_ID " +
                            //"LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = CTM_AERONAVE.USUARIO_ID " +
                            "LEFT JOIN CTM_TAB_CATEGORIA_ACFT ON CTM_TAB_CATEGORIA_ACFT.ACFT_CATEGORIA_ID = CTM_AERONAVE.ACFT_CATEGORIA_ID " +
                            "WHERE " +
                            "      (CTM_AERONAVE.EQUIPAMENTO_ID                  = " + EQUIPAMENTO_ID + "  OR " + EQUIPAMENTO_ID + " = '0') AND " +
                            "      (CTM_AERONAVE.ACF_ANO_FABRICACAO              = " + ACF_ANO_FABRICACAO + "  OR " + ACF_ANO_FABRICACAO + " = '0') AND " +
                            "      (CTM_AERONAVE.ACF_PAX                         = " + ACF_PAX + "  OR " + ACF_PAX + " = '0') AND " +
                            "      (CTM_AERONAVE.ACF_PMD                         = " + ACF_PMD + "  OR " + ACF_PMD + " = '') AND " +
                            "      (CTM_AERONAVE.ACF_PMP                         = " + ACF_PMP + "  OR " + ACF_PMP + " = '') AND " +
                            "      (CTM_AERONAVE.ACF_FOTO                        = " + ACF_FOTO + "  OR " + ACF_FOTO + " = '') AND " +
                            "      (CTM_AERONAVE.ACF_DESCRICAO_LONGA             = " + ACF_DESCRICAO_LONGA + "  OR " + ACF_DESCRICAO_LONGA + " = '') AND " +
                            "      (CTM_AERONAVE.USU_INSERT                      = " + USU_INSERT + "  OR " + USU_INSERT + " = '0') AND " +
                            "      (CTM_AERONAVE.DATA_INSERT                     = " + DATA_INSERT + "  OR " + DATA_INSERT + " = '') AND " +
                            "      (CTM_AERONAVE.USU_UPDATE                      = " + USU_UPDATE + "  OR " + USU_UPDATE + " = '0') AND " +
                            "      (CTM_AERONAVE.DATA_UPDATE                     = " + DATA_UPDATE + "  OR " + DATA_UPDATE + " = '') AND " +
                            "      (CTM_AERONAVE.ACF_TRIPULANTES                 = " + ACF_TRIPULANTES + "  OR " + ACF_TRIPULANTES + " = '0') AND " +
                            "      (CTM_AERONAVE.ACFT_CATEGORIA_ID               = " + ACFT_CATEGORIA_ID + "  OR " + ACFT_CATEGORIA_ID + " = '') ";

            DataSet dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            return dsRetorno;

        }


        public List<ES_Aeronaves> _obter_Aeronaves(
                                                string EQUIPAMENTO_ID,
                                                string EQU_DESCRICAO,
                                                string ACF_ANO_FABRICACAO,
                                                string ACF_PAX,
                                                string ACF_PMD,
                                                string ACF_PMP,
                                                string ACF_FOTO,
                                                string ACF_DESCRICAO_LONGA,
                                                string FABRICANTE_ID,                                                
                                                string ACF_TRIPULANTES,
                                                string ACFT_CATEGORIA_ID,
                                                string ORDER_BY_CLAUSE
                                                )
        {

            if (string.IsNullOrEmpty(EQUIPAMENTO_ID)) EQUIPAMENTO_ID = "0";
            if (string.IsNullOrEmpty(EQU_DESCRICAO)) EQU_DESCRICAO = "'0'"; else EQU_DESCRICAO = Util.retonarAspas(EQU_DESCRICAO + "%");
            if (string.IsNullOrEmpty(ACF_ANO_FABRICACAO)) ACF_ANO_FABRICACAO = "0";
            if (string.IsNullOrEmpty(ACF_PAX)) ACF_PAX = "0";
            if (string.IsNullOrEmpty(ACF_PMD)) ACF_PMD = "0";
            if (string.IsNullOrEmpty(ACF_PMP)) ACF_PMP = "0";
            if (string.IsNullOrEmpty(ACF_FOTO)) ACF_FOTO = "''"; else ACF_FOTO = Util.retonarAspas(ACF_FOTO + "%");
            if (string.IsNullOrEmpty(ACF_DESCRICAO_LONGA)) ACF_DESCRICAO_LONGA = "''"; else ACF_DESCRICAO_LONGA = Util.retonarAspas(ACF_DESCRICAO_LONGA + "%");
            if (string.IsNullOrEmpty(FABRICANTE_ID)) FABRICANTE_ID = "0";            
            if (string.IsNullOrEmpty(ACF_TRIPULANTES)) ACF_TRIPULANTES = "0";
            if (string.IsNullOrEmpty(ACFT_CATEGORIA_ID)) ACFT_CATEGORIA_ID = "''"; else ACFT_CATEGORIA_ID = Util.retonarAspas(ACFT_CATEGORIA_ID + "%");
            if (string.IsNullOrEmpty(ORDER_BY_CLAUSE)) ORDER_BY_CLAUSE = "EQUIPAMENTO.EQU_DESCRICAO ";

            string sql = "SELECT " +
                                  "CTM_AERONAVE.EQUIPAMENTO_ID, " +
                                  "EQUIPAMENTO.EQU_DESCRICAO, "+
                                  "CTM_AERONAVE.ACF_ANO_FABRICACAO, " +
                                  "CTM_AERONAVE.ACF_PAX, " +
                                  "CTM_AERONAVE.ACF_PMD, " +
                                  "CTM_AERONAVE.ACF_PMP, " +
                                  "CTM_AERONAVE.ACF_FOTO, " +
                                  "CTM_AERONAVE.ACF_DESCRICAO_LONGA, " +
                                  "CTM_AERONAVE.USU_INSERT, " +
                                  "CTM_AERONAVE.DATA_INSERT, " +
                                  "CTM_AERONAVE.USU_UPDATE, " +
                                  "CTM_AERONAVE.DATA_UPDATE, " +
                                  "CTM_AERONAVE.ACF_TRIPULANTES, " +
                                  "CTM_AERONAVE.ACFT_CATEGORIA_ID, " +
                                  "CTM_TAB_CATEGORIA_ACFT.ACC_DESCRICAO, "+
                                  "PN_CADASTRO.FABRICANTE_ID, "+
                                  "ENTIDADE.ENT_RAZAO_SOCIAL "+
                            "FROM CTM_AERONAVE " +
                            "LEFT JOIN EQUIPAMENTO ON EQUIPAMENTO.EQUIPAMENTO_ID = CTM_AERONAVE.EQUIPAMENTO_ID " +
                            "LEFT JOIN PN_CADASTRO ON PN_CADASTRO.PART_NUMBER_ID =  EQUIPAMENTO.PART_NUMBER_ID " +
                            "LEFT JOIN ENTIDADE ON ENTIDADE.ENTIDADE_ID = PN_CADASTRO.FABRICANTE_ID " +
                            "LEFT JOIN CTM_TAB_CATEGORIA_ACFT ON CTM_TAB_CATEGORIA_ACFT.ACFT_CATEGORIA_ID = CTM_AERONAVE.ACFT_CATEGORIA_ID " +
                            "WHERE " +
                            "      (CTM_AERONAVE.EQUIPAMENTO_ID                  = " + EQUIPAMENTO_ID + "  OR " + EQUIPAMENTO_ID + " = '0') AND " +
                            "      (EQUIPAMENTO.EQU_DESCRICAO                   = " + EQU_DESCRICAO + "  OR " + EQU_DESCRICAO + " = '0') AND " +
                            "      (CTM_AERONAVE.ACF_ANO_FABRICACAO              = " + ACF_ANO_FABRICACAO + "  OR " + ACF_ANO_FABRICACAO + " = '0') AND " +
                            "      (CTM_AERONAVE.ACF_PAX                         = " + ACF_PAX + "  OR " + ACF_PAX + " = '0') AND " +
                /*"      (CTM_AERONAVE.ACF_PMD                         = " + ACF_PMD + "  OR " + ACF_PMD + " = '') AND " +
                "      (CTM_AERONAVE.ACF_PMP                         = " + ACF_PMP + "  OR " + ACF_PMP + " = '') AND " +*/
                            "      (CTM_AERONAVE.ACF_FOTO                        = " + ACF_FOTO + "  OR " + ACF_FOTO + " = '') AND " +
                            "      (CTM_AERONAVE.ACF_DESCRICAO_LONGA             = " + ACF_DESCRICAO_LONGA + "  OR " + ACF_DESCRICAO_LONGA + " = '') AND " +
                            "      (PN_CADASTRO.FABRICANTE_ID                      = " + FABRICANTE_ID + "  OR " + FABRICANTE_ID + " = '0') AND " +                            
                            "      (CTM_AERONAVE.ACF_TRIPULANTES                 = " + ACF_TRIPULANTES + "  OR " + ACF_TRIPULANTES + " = '0') AND " +
                            "      (CTM_AERONAVE.ACFT_CATEGORIA_ID               = " + ACFT_CATEGORIA_ID + "  OR " + ACFT_CATEGORIA_ID + " = '') "+
                            "ORDER BY "+ORDER_BY_CLAUSE;

            List<ES_Aeronaves> lista = new List<ES_Aeronaves>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Aeronaves item = new ES_Aeronaves();
                    item.EQUIPAMENTO_ID = dr["EQUIPAMENTO_ID"].ToString();
                    item.EQU_DESCRICAO = dr["EQU_DESCRICAO"].ToString();
                    item.ACF_ANO_FABRICACAO = dr["ACF_ANO_FABRICACAO"].ToString();
                    item.ACF_PAX = dr["ACF_PAX"].ToString();
                    item.ACF_PMD = dr["ACF_PMD"].ToString();
                    item.ACF_PMP = dr["ACF_PMP"].ToString();
                    item.ACF_FOTO = dr["ACF_FOTO"].ToString();
                    item.ACF_DESCRICAO_LONGA = dr["ACF_DESCRICAO_LONGA"].ToString();
                    item.USU_INSERT = dr["USU_INSERT"].ToString();
                    item.DATA_INSERT = dr["DATA_INSERT"].ToString();
                    item.USU_UPDATE = dr["USU_UPDATE"].ToString();
                    item.DATA_UPDATE = dr["DATA_UPDATE"].ToString();
                    item.ACF_TRIPULANTES = dr["ACF_TRIPULANTES"].ToString();
                    item.ACFT_CATEGORIA_ID = dr["ACFT_CATEGORIA_ID"].ToString();
                    item.ACC_DESCRICAO = dr["ACC_DESCRICAO"].ToString();
                    item.FABRICANTE_ID = dr["FABRICANTE_ID"].ToString();
                    item.ENT_RAZAO_SOCIAL = dr["ENT_RAZAO_SOCIAL"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public ES_Aeronaves _obter_Aeronaves_by_id(string CTM_AERONAVE_ID)
        {

            if (string.IsNullOrEmpty(CTM_AERONAVE_ID)) CTM_AERONAVE_ID = "'0'";

            string sql = "SELECT " +
                                  "CTM_AERONAVE.EQUIPAMENTO_ID, " +
                                  "EQUIPAMENTO.EQU_DESCRICAO, " +
                                  "CTM_AERONAVE.ACF_ANO_FABRICACAO, " +
                                  "CTM_AERONAVE.ACF_PAX, " +
                                  "CTM_AERONAVE.ACF_PMD, " +
                                  "CTM_AERONAVE.ACF_PMP, " +
                                  "CTM_AERONAVE.ACF_FOTO, " +
                                  "CTM_AERONAVE.ACF_DESCRICAO_LONGA, " +
                                  "CTM_AERONAVE.USU_INSERT, " +
                                  "CTM_AERONAVE.DATA_INSERT, " +
                                  "CTM_AERONAVE.USU_UPDATE, " +
                                  "CTM_AERONAVE.DATA_UPDATE, " +
                                  "CTM_AERONAVE.ACF_TRIPULANTES, " +
                                  "CTM_AERONAVE.ACFT_CATEGORIA_ID " +
                            "FROM CTM_AERONAVE " +
                            "LEFT JOIN EQUIPAMENTO ON EQUIPAMENTO.EQUIPAMENTO_ID = CTM_AERONAVE.EQUIPAMENTO_ID " +                                                       
                            "WHERE " +
                            "      CTM_AERONAVE.EQUIPAMENTO_ID = " + CTM_AERONAVE_ID;

            ES_Aeronaves item = new ES_Aeronaves();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    item.EQUIPAMENTO_ID = dr["EQUIPAMENTO_ID"].ToString();
                    item.EQU_DESCRICAO = dr["EQU_DESCRICAO"].ToString();
                    item.ACF_ANO_FABRICACAO = dr["ACF_ANO_FABRICACAO"].ToString();
                    item.ACF_PAX = dr["ACF_PAX"].ToString();
                    item.ACF_PMD = dr["ACF_PMD"].ToString();
                    item.ACF_PMP = dr["ACF_PMP"].ToString();
                    item.ACF_FOTO = dr["ACF_FOTO"].ToString();
                    item.ACF_DESCRICAO_LONGA = dr["ACF_DESCRICAO_LONGA"].ToString();
                    item.USU_INSERT = dr["USU_INSERT"].ToString();
                    item.DATA_INSERT = dr["DATA_INSERT"].ToString();
                    item.USU_UPDATE = dr["USU_UPDATE"].ToString();
                    item.DATA_UPDATE = dr["DATA_UPDATE"].ToString();
                    item.ACF_TRIPULANTES = dr["ACF_TRIPULANTES"].ToString();
                    item.ACFT_CATEGORIA_ID = dr["ACFT_CATEGORIA_ID"].ToString();

                }
                return item;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public void _inserir_Aeronaves(
                                                string EQUIPAMENTO_ID,
                                                string ACF_ANO_FABRICACAO,
                                                string ACF_PAX,
                                                string ACF_PMD,
                                                string ACF_PMP,
                                                string ACF_FOTO,
                                                string ACF_DESCRICAO_LONGA,
                                                string USU_INSERT,
                                                string DATA_INSERT,
                                                string USU_UPDATE,
                                                string DATA_UPDATE,
                                                string ACF_TRIPULANTES,
                                                string ACFT_CATEGORIA_ID
                                                )
        {

            string sql = " INSERT INTO CTM_AERONAVE " +
                         "      ( " +
                         "          EQUIPAMENTO_ID                 , " +
                         "          ACF_ANO_FABRICACAO             , " +
                         "          ACF_PAX                        , " +
                         "          ACF_PMD                        , " +
                         "          ACF_PMP                        , " +
                         "          ACF_FOTO                       , " +
                         "          ACF_DESCRICAO_LONGA            , " +
                         "          USU_INSERT                     , " +
                         "          DATA_INSERT                    , " +
                         "          USU_UPDATE                     , " +
                         "          DATA_UPDATE                    , " +
                         "          ACF_TRIPULANTES                , " +
                         "          ACFT_CATEGORIA_ID                " +
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarAspas(EQUIPAMENTO_ID, true) + ", " +
                              Util.retonarAspas(ACF_ANO_FABRICACAO, true) + ", " +
                              Util.retonarAspas(ACF_PAX, true) + ", " +
                              Util.retonarAspas(ACF_PMD, true) + ", " +
                              Util.retonarAspas(ACF_PMP, true) + ", " +
                              Util.retonarAspas(ACF_FOTO, true) + ", " +
                              Util.retonarAspas(ACF_DESCRICAO_LONGA, true) + ", " +
                              Util.retonarAspas(USU_INSERT, true) + ", " +
                              Util.retonarAspas(DATA_INSERT, true) + ", " +
                              Util.retonarAspas(USU_UPDATE, true) + ", " +
                              Util.retonarAspas(DATA_UPDATE, true) + ", " +
                              Util.retonarAspas(ACF_TRIPULANTES, true) + ", " +
                              Util.retonarAspas(ACFT_CATEGORIA_ID, true) +
                 "      )";
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Aeronaves(
                                                string EQUIPAMENTO_ID,
                                                string ACF_ANO_FABRICACAO,
                                                string ACF_PAX,
                                                string ACF_PMD,
                                                string ACF_PMP,
                                                string ACF_FOTO,
                                                string ACF_DESCRICAO_LONGA,
                                                string USU_INSERT,
                                                string DATA_INSERT,
                                                string USU_UPDATE,
                                                string DATA_UPDATE,
                                                string ACF_TRIPULANTES,
                                                string ACFT_CATEGORIA_ID
                                                )
        {

            string sql = " UPDATE CTM_AERONAVE SET " +
                         "      EQUIPAMENTO_ID                  = " + Util.retonarAspas(EQUIPAMENTO_ID, true) + ", " +
                         "      ACF_ANO_FABRICACAO              = " + Util.retonarAspas(ACF_ANO_FABRICACAO, true) + ", " +
                         "      ACF_PAX                         = " + Util.retonarAspas(ACF_PAX, true) + ", " +
                         "      ACF_PMD                         = " + Util.retonarAspas(ACF_PMD, true) + ", " +
                         "      ACF_PMP                         = " + Util.retonarAspas(ACF_PMP, true) + ", " +
                         "      ACF_FOTO                        = " + Util.retonarAspas(ACF_FOTO, true) + ", " +
                         "      ACF_DESCRICAO_LONGA             = " + Util.retonarAspas(ACF_DESCRICAO_LONGA, true) + ", " +
                         "      USU_INSERT                      = " + Util.retonarAspas(USU_INSERT, true) + ", " +
                         "      DATA_INSERT                     = " + Util.retonarAspas(DATA_INSERT, true) + ", " +
                         "      USU_UPDATE                      = " + Util.retonarAspas(USU_UPDATE, true) + ", " +
                         "      DATA_UPDATE                     = " + Util.retonarAspas(DATA_UPDATE, true) + ", " +
                         "      ACF_TRIPULANTES                 = " + Util.retonarAspas(ACF_TRIPULANTES, true) + ", " +
                         "      ACFT_CATEGORIA_ID               = " + Util.retonarAspas(ACFT_CATEGORIA_ID, true) +
                         " WHERE EQUIPAMENTO_ID =  " + EQUIPAMENTO_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Aeronaves(string CTM_AERONAVE_ID)
        {
            string sql = "DELETE FROM CTM_AERONAVE WHERE EQUIPAMENTO_ID = " + CTM_AERONAVE_ID;
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
